package com.atguigu.gulimall.finance.service;

import com.atguigu.common.utils.PageUtils;
import com.atguigu.gulimall.finance.entity.MainEntity;
import com.atguigu.gulimall.finance.entity.vo.ExcelFinanceVo;
import com.atguigu.gulimall.finance.entity.vo.FinanceVo;
import com.atguigu.gulimall.finance.entity.vo.MainEntityVo;
import com.atguigu.gulimall.finance.entity.vo.MainPipDataVo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 财务收入
 *
 * @author huguangwei
 * @email huguangwei@gmail.com
 * @date 2023-01-19 09:18:37
 */
public interface MainService extends IService<MainEntity> {


    PageUtils queryPage(Map<String, Object> params);

    /**
     * 统计每个财务类型的总数
     *
     * @param typeName
     * @return BigDecimal
     */
    BigDecimal getSumMoney(String typeName, Integer incomeType);

    /**
     * 获取统计数据
     *
     * @return List<MainPipDataVo>
     */
    List<MainPipDataVo> getExpendSumMoney();

    /**
     * 保存数据
     *
     * @param income
     */
    void saveMain(MainEntity income);

    /**
     * 根据id更新
     *
     * @param income
     */
    void updateIcomeById(MainEntity income);

    /**
     * 根据id组批量删除
     *
     * @param asList
     */
    void removeIcomeByIds(List<Long> asList);

    /**
     * 根据id获取详情
     *
     * @param id
     * @return
     */
    MainEntityVo getInfo(Long id);

    /**
     * 获取总财务
     *
     * @return
     */
    FinanceVo getSumFinance();

    /**
     * 获取所有财务列表-支出
     *
     * @return
     */
    List<ExcelFinanceVo> getAllFinalce();

    /**
     * 获取所有财务列表-收入
     *
     * @return
     */
    List<MainPipDataVo> getSumMoneyIcome();
}

